package com.ljkj.zjf.rest;

import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

import javax.ws.rs.POST;
import javax.ws.rs.Path;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ljkj.common.application.SpringApplicationContext;
import com.ljkj.common.db.util.Contants;
import com.ljkj.zjf.service.WechatService;

/**
 * 微信服务接口实现类 
 * @author 李竺桐  20160720
 *
 */
@Path("rest/wechat")
public class WechatSource {
	static int iCount = 0;
	private static Logger logger = LoggerFactory.getLogger(WechatSource.class);
	private static WechatService wechatService;
	
	//初始化service
	static {
		wechatService  = (WechatService) SpringApplicationContext.getBean("wechatService");
	}
	/**
	 * rest服务入口函数
	 * @param strJson_para 接口传入参数JSON串
	 * @author 李竺桐  20160720
	 * @return
	 * @throws Exception 
	 */
	@Path("/entrance")
	@POST
	public String entrance(String strJson_para) throws Exception {
		iCount++;
		logger.debug("当前并发请求:" + iCount);
		String strDecode_str = URLDecoder.decode(strJson_para, "utf-8");// 对传入参数解码
		logger.info("传入参数串:" + strDecode_str);

		long lMills = System.currentTimeMillis();
		JSONObject json_object = JSON.parseObject(strDecode_str);
		String strFunc_name = json_object.getString("func_name"); // 解析出传入参数中接口函数名称

		Map<String, Object> mapError = new HashMap<String, Object>(); // 输出错误信息
		mapError.put("result", Contants.CALL_RESULT_FAIL);

		if (strFunc_name == null || strFunc_name.equals("")) {
			mapError.put("errmessage", "接口函数名称不能为空");
			return URLEncoder.encode(JSON.toJSONString(mapError), "utf-8");
		}

		String strResult= ""; // 输出结果字符串
		try {
			if (strFunc_name.equals("test")) {// 测试rest通道
				strResult="{code:1}";
			}else if (strFunc_name.equals("queryGoodsClass")) {//查询商品分类
				strResult = wechatService.queryGoodsClass(strDecode_str);
			}else if (strFunc_name.equals("queryGoodsType")) {//查询商品类型
				strResult = wechatService.queryGoodsType(strDecode_str);
			}else if (strFunc_name.equals("queryCliffordGoodsList")) {//查询商品列表
				strResult = wechatService.queryCliffordGoodsList(strDecode_str);
			}else if (strFunc_name.equals("queryCliffordGoodsListByClass")) {//根据商品分类查询商品列表
				strResult = wechatService.queryCliffordGoodsListByClass(strDecode_str);
			}else if (strFunc_name.equals("queryCliffordGoodsById")) {//根据商品ID查询商品
				strResult = wechatService.queryCliffordGoodById(strDecode_str);
			}else if (strFunc_name.equals("queryGoodsList")) {//查询商品列表
				strResult = wechatService.queryGoodsList(strDecode_str);
			}else if (strFunc_name.equals("queryGoodsListByType")) {//根据商品分类查询商品列表
				strResult = wechatService.queryGoodsListByType(strDecode_str);
			}else if (strFunc_name.equals("queryGoodsById")) {//根据商品ID查询商品
				strResult = wechatService.queryGoodById(strDecode_str);
			}else if (strFunc_name.equals("queryRecommendGoodsList")) {//获取推荐商品列表
				strResult = wechatService.queryRecommendGoodsList(strDecode_str);
			}else if (strFunc_name.equals("queryADList")) {//获取广告列表
				strResult = wechatService.queryADList(strDecode_str);
			}else if (strFunc_name.equals("queryADByID")) {//根据ID获取广告列表
				strResult = wechatService.queryADByID(strDecode_str);
			}else if (strFunc_name.equals("queryActivityList")) {//根据获取众筹、活动列表
				strResult = wechatService.queryActivityList(strDecode_str);
			}else if (strFunc_name.equals("queryActivityByID")) {//根据ID获取众筹、活动列表
				strResult = wechatService.queryActivityByID(strDecode_str);
			}else if (strFunc_name.equals("saveCliffordInfo")) {//发起祈福 创建祈福信息
				strResult = wechatService.saveCliffordInfo(strDecode_str);
			}else if (strFunc_name.equals("saveCliffordRecord")) {//发起祈福 记录祈福人祈福记录
				strResult = wechatService.saveCliffordRecord(strDecode_str);
			}else if (strFunc_name.equals("queryCliffordListByOpenId")) {//根据用户openId获取已祈福列表
				strResult = wechatService.queryCliffordListByOpenId(strDecode_str);
			}else if (strFunc_name.equals("queryCliffordReocrdListByOpenId")) {//根据用户openId获取祈福进度及人员等
				strResult = wechatService.queryCliffordReocrdListByOpenId(strDecode_str);
			}else if (strFunc_name.equals("saveActivityRecord")) {//保存众筹记录
				strResult = wechatService.saveActivityRecord(strDecode_str);
			}else if (strFunc_name.equals("queryActivityRecordListByOpenId")) {//根据用户openId获取活动记录
				strResult = wechatService.queryActivityRecordListByOpenId(strDecode_str);
			}else if (strFunc_name.equals("saveAddress")) {//保存地址
				strResult = wechatService.saveAddress(strDecode_str);
			}else if (strFunc_name.equals("queryAddressList")) {//获取地址列表
				strResult = wechatService.queryAddressList(strDecode_str);
			}else if (strFunc_name.equals("saveWeixinUser")) {//保存用户
				strResult = wechatService.saveWeixinUser(strDecode_str);
			}else if (strFunc_name.equals("queryLable")) {//查询印象标签列表
				strResult = wechatService.queryLable(strDecode_str);
			}else if (strFunc_name.equals("queryUserInfo")) {//查询用户信息
				strResult = wechatService.queryUserInfo(strDecode_str);
			}else if (strFunc_name.equals("updateUserInfo")) {//修改用户信息
				strResult = wechatService.updateUserInfo(strDecode_str);
			}else if (strFunc_name.equals("queryCliffordDetail")) {//查询祈福详细
				strResult = wechatService.queryCliffordDetail(strDecode_str);
			}else if (strFunc_name.equals("queryMessage")) {//查询留言
				strResult = wechatService.queryMessage(strDecode_str);
			}else if (strFunc_name.equals("queryActivityByCake")) {//根据ID获取众筹、活动列表 ----众筹 获取第一个
				strResult = wechatService.queryActivityByCake(strDecode_str);
			}else if (strFunc_name.equals("queryMyCliffordRecordList")) {//根据用户openId查询我的聚福记录列表
				strResult = wechatService.queryMyCliffordRecordList(strDecode_str);
			}else if (strFunc_name.equals("saveCarInfo")) {//保存、修改购物车
				strResult = wechatService.saveCarInfo(strDecode_str);
			}else if (strFunc_name.equals("queryMyCar")) {//获取购物车列表
				strResult = wechatService.queryMyCar(strDecode_str);
			}else if (strFunc_name.equals("saveOrderInfo")) {//生成订单
				strResult = wechatService.saveOrderInfo(strDecode_str);
			}else if (strFunc_name.equals("deleteOrderInfo")) {//删除订单
				strResult = wechatService.deleteOrderInfo(strDecode_str);
			}else if (strFunc_name.equals("cancleOrderInfo")) {//取消订单
				strResult = wechatService.cancleOrderInfo(strDecode_str);
			}else if (strFunc_name.equals("completeOrderInfo")) {//完成订单
				strResult = wechatService.completeOrderInfo(strDecode_str);
			}else if (strFunc_name.equals("saveOrderPayInfo")) {//保存订单支付记录
				strResult = wechatService.saveOrderPayInfo(strDecode_str);
			}else {
				mapError.put("errmessage", "该接口函数名称不存在");
				strResult = JSON.toJSONString(mapError);
			}
		} catch (Exception ex) {
			ex.printStackTrace();
			logger.error(ex.getMessage(), ex);
			mapError.put("errmessage", "服务发生异常：" + ex.getMessage());
			strResult = JSON.toJSONString(mapError);
		}

		logger.debug("输出结果:" + strResult);
		String encode_ret = URLEncoder.encode(strResult, "utf-8");// 对输出结果编码
		iCount--;
		lMills = System.currentTimeMillis() - lMills;
		logger.debug("当前请求耗时:" + lMills / 1000);
		logger.debug("当前并发请求:" + iCount);
		return encode_ret;
	}

}
